package com.example.software.service;

import com.example.software.dto.MessageDTO;
import com.example.software.entity.Message;
import com.example.software.vo.ContactVO;
import com.example.software.vo.MessageVO;

import java.util.List;

public interface MessageService {
    
    /**
     * 发送消息
     * @param messageDTO 消息信息
     * @param senderId 发送者ID
     * @return 消息ID
     */
    Long sendMessage(MessageDTO messageDTO, Long senderId);
    
    /**
     * 获取消息列表
     * @param userId 用户ID
     * @return 消息列表
     */
    List<Message> getMessageList(Long userId);
    
    /**
     * 标记消息为已读
     * @param messageId 消息ID
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean markAsRead(Long messageId, Long userId);
    
    /**
     * 获取未读消息数量
     * @param userId 用户ID
     * @return 未读消息数量
     */
    int getUnreadMessageCount(Long userId);
    
    /**
     * 获取联系人列表
     * @param userId 用户ID
     * @return 联系人列表
     */
    List<ContactVO> getContactList(Long userId);
    
    /**
     * 获取与特定用户的对话
     * @param userId 当前用户ID
     * @param contactId 联系人ID
     * @return 消息VO列表
     */
    List<MessageVO> getConversation(Long userId, Long contactId);
}